package org.springframework.context.support;

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;

/**
 * @author derekyi
 * @date 2020/11/28
 */
public abstract class AbstractXmlApplicationContext extends AbstractRefreshableApplicationContext {

	//loadBeanDefinitions，这个方法，传入ioc容器，并且自定义一个
	protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) {
		//ioc读取资源需要资源加载器

		//****Reader，里面包装了一个资源加载器。这个资源加载器是专门读取xml里的bean的
		//一个beanFactory的bean容器，一个是资源装载器（this）
		//this的名称是ClassPathXmlApplicationContext
		XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory, this);
		//就是返回当前的路径
		String[] configLocations = getConfigLocations();
		if (configLocations != null) {
			//这里面会进行资源装载，还有BeanDefinition的注册
			beanDefinitionReader.loadBeanDefinitions(configLocations);
		}
	}

	protected abstract String[] getConfigLocations();
}
